package com.ce.pms.system.custservice.service;

import java.util.List;

import org.hibernate.exception.ConstraintViolationException;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.dao.DataIntegrityViolationException;

import com.ce.pms.DBUnitTool;
import com.ce.pms.exception.BusinessException;
import com.ce.pms.system.custservice.dao.IEventRegionDao;
import com.ce.pms.system.custservice.model.EventRegionDO;
import com.ce.pms.system.custservice.vo.EventRegionVO;
/**
 * 功能描述: 区域设置维护service单元测试类
 * <p>版权所有：中企动力
 * <p>未经本公司许可，不得以任何方式复制或使用本程序任何部分
 *
 * @author  胡煦
 * Create on:2008-12-17
 * Edit author:
 * Edit on:
 * 修改原因：

 */
public class EventRegionServiceImplT extends DBUnitTool {
	/**
	 * 方法描述: 区域设置列表查询test方法
	 * @author 胡煦
	 * Create on:2008-12-16
	 * @param name
	 * @return List<SignReadingRuleVO>
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	@Test
	public void testQueryEventRegion() {
		List list = eventRegionService.getEventRegionList();
		Assert.assertNotNull("断言不为空",list);
	}

	/**
	 * 方法描述: 区域设置增加test方法
	 *
	 * @author 胡煦 Create on:2008-12-16
	 * @param SignReadingRuleVO
	 * @return SignReadingRuleVO Edit author: Edit on: 修改原因：
	 */
	@Test
	public void testAddEventRegion() {
		EventRegionVO eventRegionVO = new EventRegionVO();
		eventRegionVO.setCreator(1l);
		eventRegionVO.setName("测试一");
		eventRegionVO.setValidity("1");

		try {
			eventRegionVO = eventRegionService.addEventRegion(eventRegionVO);
			Assert.assertNotNull("断言不为空",eventRegionVO.getKeyword());
		} catch (BusinessException e) {
			e.printStackTrace();
			super.dealBusinessException(e, "custservice:system_name_exist_exception");
		}
	}
	/**
	 * 方法描述: 区域设置删除test方法
	 *
	 * @author 胡煦 Create on:2008-12-16
	 * @param SignReadingRuleVO
	 * @return SignReadingRuleVO Edit author: Edit on: 修改原因：
	 */
	@Test
	public void testDeleteEventRegion() {
		Long eventRegionId = 1l;

		try {
			eventRegionService.deleteEventRegion(eventRegionId);
			EventRegionDO eventRegionDO = eventRegionDao.findById(eventRegionId);
			Assert.assertNull("断言为空",eventRegionDO);

		} catch (ConstraintViolationException e) {
			e.printStackTrace();
			super.dealException(e);
		}catch (DataIntegrityViolationException e) {
			e.printStackTrace();
			super.dealException(e);
		}catch (BusinessException e) {
			e.printStackTrace();
			super.dealBusinessException(e, "custservice:system_delete_inused_exception");
		}
	}
	/**
	 * 方法描述:区域设置修改test方法
	 *
	 * @author 胡煦 Create on:2008-12-16
	 * @param readingRuleId
	 * @return boolean Edit author: Edit on: 修改原因：
	 */
	@Test
	public void testEditEventRegion() {
		EventRegionVO eventRegionVO = new EventRegionVO();
		eventRegionVO.setKeyword(2l);
		eventRegionVO.setCreator(1l);
		eventRegionVO.setName("测试二");
		eventRegionVO.setValidity("1");
		eventRegionVO.setModifier(1l);
		try {
			eventRegionVO = eventRegionService.editEventRegion(eventRegionVO);
			Assert.assertEquals("测试二", eventRegionVO.getName());
		} catch (BusinessException e) {
			e.printStackTrace();
			super.dealBusinessException(e, "custservice:system_name_exist_exception");
		}
	}
	/**
	 * 功能描述:校验区域设置名字是否存在test方法<br>
	 * 注：新建判断name的唯一性时，oldId传为null；修改判断name的唯一性时，则需要传入本身的ID<br>
	 * @param name
	 * @param id
	 * @return
	 * Create author:胡煦
	 * Create on:2008-7-18
	 * Edit author:
	 * Edit on:
	 * Why:
	 */
	@Test
	public void testCheckEventRegionByName(){

		try {
			eventRegionService.checkEventRegionByName("测试二", null);
		} catch (BusinessException e) {
			e.printStackTrace();
			super.dealBusinessException(e, "custservice:system_name_exist_exception");
		}
	}
	static private IEventRegionService eventRegionService;
	static private IEventRegionDao eventRegionDao;
	/**
    *
    * 功能描述:   <br>
    *
    * Create author：胡煦  <br>
    * Create on:2008-12-17  <br>
    * Edit author：  <br>
    * Edit on:    <br>
    * Why:     <br>
    */
	@BeforeClass
	public static void initEventRegion(){
		if (eventRegionService == null) {
			eventRegionService = (IEventRegionService)DBUnitTool.applicationContext.getBean("eventRegionService");
		}
		if (eventRegionDao == null) {
			eventRegionDao = (IEventRegionDao)DBUnitTool.applicationContext.getBean("eventRegionDao");
		}
	}
}
